package com.syy.framework.config;

import com.syy.common.utils.ServletUtils;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;

/**
 * 服务相关配置
 *
 * @author 地理信息中心
 */
@Component
public class ServerConfig {
    /**
     * 获取完整的请求路径，包括：域名，端口，上下文访问路径
     *
     * @return 服务地址
     */
    public String getUrl(){
        HttpServletRequest request = ServletUtils.getRequest();
        return getDomain(request);
    }

    public String getDomain(HttpServletRequest request) {
        // 获取当前请求的完整URL
        StringBuffer url = request.getRequestURL();
        // 获取应用的上下文路径
        String contextPath = request.getServletContext().getContextPath();
        // 获取当前URL的字符串表示
        String currentUrl = url.toString();
        // 如果当前URL不以上下文路径结尾，则附加上下文路径
        if (!currentUrl.endsWith(contextPath)) {
            url.append(contextPath);
        }
        // 删除请求的URI部分
        url.delete(url.length() - request.getRequestURI().length(), url.length());
        // 再次检查是否需要附加上下文路径
        if (!url.toString().endsWith(contextPath)) {
            url.append(contextPath);
        }
        // 返回最终的URL字符串
        return url.toString();
    }
}
